package ch.elca.lol.puissance4.player;

import ch.elca.lol.puissance4.board.Board;
import ch.elca.lol.puissance4.game.Token;

/** Interface for connect4 Players. */
// TODO: provide info/logging mechanism for players as well as surrender() methods ?
// TODO: add an init(Board) method in interface Player ?
public interface Player {
	/** Called at the beginning of game to indicate the kind of tokens this player will play. */
	public void setToken(Token t);
	
	/**
	 * Called during each of the player's turn. Implementations of this method should return an integer indicating
	 * at which column the player wants to play. Illegal moves will be denied may result in another call of the method.
	 * The Board provided as argument is a copy and can be freely modified.
	 */
	public int play(Board b);
	
	/** Called after adversaries have played to indicate in which column they moved. */
	// TODO remove Player.played(), use Board.getlastMove
	public void played(int col);
}
